package co.udistrital.dao;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Vector;

import co.udistrital.model.Persona;

//clase singleton
public class LoadDataImp implements ILoadData {

	private static LoadDataImp instance;
	
	private LoadDataImp(){}
	
	public static LoadDataImp getInstance()
	{
		if (instance == null)
			instance = new LoadDataImp();
		return instance;
	}
	
	public Vector<Persona> getContactos() throws IOException{
		Vector<Persona> personas = null;
		try{
			FileReader archivo = new FileReader("c://personas.txt");
			BufferedReader entrada = new BufferedReader(archivo);
			personas = readArchivo(entrada);
			
		} catch (FileNotFoundException e)
		{
			//Se Crea el Archivo
			BufferedWriter outfile;
			try{
				outfile = new BufferedWriter (new FileWriter("c://personas.txt"));
				outfile.write("Archivo de datos de personas" + "\n");
				outfile.close();
				return null;
				
			}catch (IOException ex)
			{
				ex.printStackTrace();
			}
		}
		
		return personas;

	}

	private Vector<Persona> readArchivo(BufferedReader entrada) throws IOException {
		//toquen para recorrer datos
		
		StringTokenizer tok;
		String s;
		String nombres;
		String apellidos;
		String telefono;
		Integer numeroTelefono;
		Persona P;
		
		Vector<Persona> personas = new Vector<Persona>();
		
		//Se debe leer el encabezado antes de iniciar la lectura del tokenizer
		String encabezado = entrada.readLine();
		
		while ((s = entrada.readLine()) != null)
		{
			//Separador punto y coma
			tok = new StringTokenizer (s,";");
			nombres = tok.nextToken();
			apellidos = tok.nextToken();
			telefono = tok.nextToken();
			numeroTelefono = Integer.valueOf(telefono.trim());
			P = new Persona(nombres.trim(),apellidos.trim(),numeroTelefono);
			personas.add(P);
		}
	
		if (personas.size() == 0)
			personas = null;
		
	
		return personas;
	}



}
